home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / gnome-wm < prev    next >
Text File  |  2009-10-23  |  5KB  |  185 lines

  1. #!/bin/sh
  2.  
  3. # The user can specify his prefered WM by setting the WINDOW_MANAGER
  4. # environment variable or setting the
  5. # /desktop/gnome/applications/window_manager/default gconf key.
  6. #
  7. # If this is not set, we search a list of known windowmanagers and use
  8. # the first one that is found in the users's PATH
  9. #
  10. # NOTE: DON'T USE THIS.  Please have your window manager install
  11. # a desktop file and change the gconf key
  12. # /desktop/gnome/session/required_components/windowmanager
  13.  
  14. # sm-client-id value
  15. SMID=
  16. # default-wm value
  17. DEFWM=
  18.  
  19. #read in the arguments
  20. GET=
  21. for n in "$@" ; do
  22.   case "$GET" in
  23.     smid)
  24.       SMID=$n
  25.       GET=
  26.       ;;
  27.     defwm)
  28.       DEFWM=$n
  29.       GET=
  30.       ;;
  31.     *)
  32.       case "$n" in
  33.         --sm-client-id)
  34.           GET=smid
  35.           ;;
  36.         --default-wm)
  37.           GET=defwm
  38.           ;;
  39.       esac
  40.       ;;
  41.   esac
  42. done
  43.  
  44. # Migrate compiz to compiz-manager if possible and needed
  45. if [ "x$WINDOW_MANAGER" = "xcompiz" -o "x$DEFWM" = "xcompiz" ]; then
  46.   which compiz-manager > /dev/null 2>&1
  47.   if [ $? -eq 0 ]; then
  48.     if [ "x$WINDOW_MANAGER" = "xcompiz" ]; then
  49.       WINDOW_MANAGER="compiz-manager"
  50.     fi
  51.     if [ "x$DEFWM" = "xcompiz" ]; then
  52.       DEFWM="compiz-manager"
  53.     fi
  54.   fi
  55. fi
  56.  
  57. # Get previously set window manager in gconf
  58. if [ ! "$DEFWM" ]; then
  59.   DEFWM=`gconftool-2 -g /desktop/gnome/applications/window_manager/default 2>/dev/null`
  60. fi
  61.  
  62. # special case handling for dapper upgrades (this runs only once after the upgrade)
  63. if [ -z "$DEFWM" ] && [ -f /var/lib/gnome-session/dapper-upgrade ]; then
  64.     gconftool-2 -s /desktop/gnome/applications/window_manager/default /usr/bin/metacity --type string
  65.     DEFWM=/usr/bin/metacity
  66. fi
  67.  
  68. # If not exist, set to compiz (if available) 
  69. if [ ! -x "$DEFWM" ]; then
  70.     if [ -x "/usr/bin/compiz" ]; then
  71.     gconftool-2 -s /desktop/gnome/applications/window_manager/default /usr/bin/compiz --type string
  72.     DEFWM=/usr/bin/compiz
  73.     elif [ -x "/usr/bin/metacity" ]; then
  74.     gconftool-2 -s /desktop/gnome/applications/window_manager/default /usr/bin/metacity --type string
  75.     DEFWM=/usr/bin/metacity
  76.     else
  77.     unset DEFWM
  78.     fi
  79. fi
  80.  
  81. # WINDOW_MANAGER overrides all
  82. if [ -z "$WINDOW_MANAGER" ] ; then
  83.     WINDOW_MANAGER=`gconftool-2 --get /desktop/gnome/session/required_components/windowmanager 2> /dev/null`
  84. fi
  85.  
  86. # Avoid looping if the session configuration tells us to use gnome-wm or if
  87. # the user forces gnome-wm via WINDOW_MANAGER
  88. if [ "x$WINDOW_MANAGER" = "xgnome-wm" ]; then
  89.   WINDOW_MANAGER=""
  90. fi
  91.  
  92. if [ -z "$WINDOW_MANAGER" ] ; then
  93.   # Create a list of window manager we can handle, trying to only use the
  94.   # compositing ones when it makes sense
  95.  
  96.   xdpyinfo 2> /dev/null | grep -q "^ *Composite$" 2> /dev/null
  97.   IS_X_COMPOSITED=$?
  98.  
  99.   KNOWN_WM="sawfish sawmill enlightenment icewm wmaker fvwm2 qvwm fvwm twm kwm"
  100.   if [ $IS_X_COMPOSITED -eq 0 ] ; then
  101.     KNOWN_WM="compiz beryl $KNOWN_WM"
  102.   fi
  103.   # metacity is still the default wm in GNOME
  104.   KNOWN_WM="metacity $KNOWN_WM"
  105.  
  106.   OLDIFS=$IFS
  107.   if [ -z "$DEFWM" -o "x$DEFWM" = "xgnome-wm" ]; then
  108.     for wm in $KNOWN_WM ; do
  109.       IFS=":"
  110.       for dir in $PATH ; do
  111.     if [ -x "$dir/$wm" ] ; then
  112.       WINDOW_MANAGER="$dir/$wm"
  113.           break 2
  114.     fi
  115.       done
  116.       IFS=$OLDIFS
  117.     done
  118.   else
  119.     WINDOW_MANAGER=$DEFWM
  120.   fi
  121.   IFS=$OLDIFS
  122. fi
  123.  
  124. # Look for the default window manager on the system
  125.  
  126. if [ -z "$WINDOW_MANAGER" ] ; then
  127.   WINDOW_MANAGER=$(readlink /etc/alternatives/x-window-manager 2>/dev/null)
  128. fi
  129.  
  130. # Now create options OPT1, OPT2 and OPT3 based on the windowmanager used
  131. OPT1=
  132. OPT2=
  133. OPT3=
  134. OPT4=
  135. if [ ! -z "$SMID" ] ; then
  136.   case `basename $WINDOW_MANAGER` in
  137.     sawfish|sawmill|metacity|mutter)
  138.       OPT1=--sm-client-id=$SMID
  139.       ;;
  140.     openbox|enlightenment|e16)
  141.       OPT1=--sm-client-id
  142.       OPT2=$SMID
  143.       ;;
  144.     twm)
  145.       OPT1=-clientId
  146.       OPT2=$SMID
  147.       ;;
  148.     lwm)
  149.       OPT1=-s
  150.       OPT2=$SMID
  151.       ;;
  152.     fvwm|fvwm2)
  153.       OPT1=-i
  154.       OPT2=$SMID
  155.       ;;
  156.     compiz|compiz-manager)
  157.       OPT1=--sm-client-id
  158.       OPT2=$SMID
  159.       ;;
  160.     beryl)
  161.       OPT1=--sm-client-id
  162.       OPT2=$SMID
  163.       ;;
  164.     #FIXME: add all other windowmanagers here with their proper options
  165.   esac
  166. fi
  167.  
  168. case `basename $WINDOW_MANAGER` in
  169.   compiz)
  170.     #gtk-window-decorator &
  171.     #OPT3=glib
  172.     #OPT4=gconf
  173.     ;;
  174.   beryl)
  175.     emerald &
  176.     ;;
  177. esac
  178.  
  179. # Store the selected WM with gconf
  180. gconftool-2 -t string -s /desktop/gnome/applications/window_manager/current "$WINDOW_MANAGER"
  181.  
  182. exec "$WINDOW_MANAGER" $OPT1 $OPT2 $OPT3 $OPT4
  183.  
  184. echo "ERROR: No window manager could run!"
  185.